Nowadays, there are a plurality of different languages and protocols used by developers around the world for developing different applications. Even programs that look very similar to the user may treat data completely different when communicating to other applications. There are some standards but the variety of languages is necessary due to the diversification of situations in which they are used. Besides, when an application is being developed, it is impossible for the developer to foresee all the uses the application will have, therefore it is impossible that the application itself will be able to perform such integration with all the others applications that it will work with.
In this scenario, the integration between diverse applications is very important in order to achieve a stable and reliable solution. For example, most database are running on mainframes or similar high-end servers, and most applications run on low-end servers or even common computers, thus the component between them must be as reliable and stable as both of them.
However integration of digital systems from different manufacturers in a company is extremely difficult, due to the inherent features of each one of these systems. There is a significant aggravating circumstance regarding this integration in large corporate groups that need to operate together. Besides the quality, both speed and reliability in the integration of these systems are sought, such that they fully satisfy the desired objectives.
Information is exchanged between these different digital systems through electronic messages, whose volume has significantly increased in the last few years. This increase proportionally raises the probability of failures, either due to delay in processing, system unavailability or language incompatibility.
Several digital systems were developed with the aim of satisfactorily solving the mentioned problems, for example, US Patent Application Publication No. 2003/0177160 relates to scheduling multiple tasks running on multiple platforms by analysis and consideration of various factors and metrics, such as priority if execution, balancing the work load, balancing of resources, resource availability, time constraints, etc. through such expedients as task assignment. The purpose is to minimize processing execution time and client waiting time by efficiently distributing workload among operational computers, processors and other system resources. A database stores the relationship of real world server workload versus time, measured against various metrics and historical data, within an intermediate result used to simulate future demand. This simulation is then used to reconfigure the system to meet the demand, thereby providing higher degrees of self management and autonomy to the web site.
The well-known system in prior art is the Biztalk Server (Microsoft Corporation trademark), which is an integration server product that enables you to develop, deploy, and manage integrated business processes and Web services that basically consists in execution of a message receiving process, orchestration (processing based on business rules) and delivery of these messages to the respective fulfillment application, connected to an Intranet or Internet. One subsystem used is the host (instance), which enables distributing several system components among several computers connected in network allowing with the purpose of sharing the processing. Each host can comprise one or more channels and adapters for sending and/or receiving messages, orchestration modules and pipelines.
The MQSeries family is part of the collection of products from the “WebSphere Business Integration” (International Business Machines Corporation trademarks), which is middleware for commercial messaging and queuing that speeds implementation of distributed applications by simplifying application development and test on a variety of platforms. The MQSeries products enable sending and receiving data, as messages, between programs that are internal or external to the business. They handle the network interfaces, ensure that messages are not duplicated, handle communication protocols, distribute the workload dynamically between a physical network of servers using Secure Sockets Layer (SSL), manipulate the system reconstruction after the occurrence of any problem and facilitate the writing of portable programs.